<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .title {
        background-color: orange;
      }
    </style>
  </head>

  <!-- 引入react核心库 -->
  <script src="../js/react.development.js"></script>
  <!-- 引入react-dom,用于支持react操作DOM -->
  <script src="../js/react-dom.development.js"></script>
  <!-- 引入babel,用于将jsx转换为js -->
  <script src="../js/babel.min.js"></script>

  <body>
    <!-- 容器 -->
    <div id="app"></div>
  </body>

  <script type="text/babel">
    /* 此处一定要写babel */
    const myId = "test";
    const mySpan = "Hello,React";

    // 1.创建虚拟DOM
    /* 外层括号是React解析语法，内层括号是对象用键值对属性去书写 */
    const VDOM = (
      <div>
        <h1 className="title" id={myId}>
          <span style={{ color: "white", fontSize: "20px " }}>
            {mySpan.toUpperCase()}
          </span>
        </h1>
        <input type="text" />
      </div>
    );

    //2.渲染虚拟DOM到页面上
    ReactDOM.render(VDOM, document.getElementById("app"));

    /*
        jsx语法规则
        1.定义虚拟DOM时，不要写引号。
        2.标签中混入JS表达式时要用{}。
        3.样式的类名指定不要用class，要用className。
        4.内联样式，要用style={{key : value}}的形式去写。
        5.只有一个根标签。
        6.标签必须闭合。
        7.标签首字母：
           (1).若小写字母开头，则将该标签转为html中同名元素，若html中无该标签对应的同名元素，则报错。
           (2).若大写字母开头，react就去渲染对应的组件，若组件没有定义，则报错。|
    */
  </script>
</html>
